Move the content of the script file vtpm-addtodb into the
authorkfraser@localhost.localdomain <kfraser@localhost.localdomain>
Mon, 10 Jul 2006 16:36:41 +0000 (17:36 +0100)
committerkfraser@localhost.localdomain <kfraser@localhost.localdomain>
Mon, 10 Jul 2006 16:36:41 +0000 (17:36 +0100)
vtpm-common.sh
script. The newly created function 'vtpm_add_and_activate' also
assigns
the instance number to the xenstore entry to activate the backend.
Renaming of isLocalAddress function to vtpm_isLocalAddress.

Signed-off-by: Stefan Berger <stefanb@us.ibm.com>
tools/examples/Makefile
tools/examples/README
tools/examples/vtpm-addtodb [deleted file]
tools/examples/vtpm-common.sh
tools/examples/vtpm-impl

index fb93063570ad29758ece8f771429f7dacc7849ec..c5ccb6c8af1fd94045649ed58a06227d5b6d15b1 100644 (file)
@@ -26,7 +26,7 @@ XEN_SCRIPTS += network-route vif-route
 XEN_SCRIPTS += network-nat vif-nat
 XEN_SCRIPTS += block
 XEN_SCRIPTS += block-enbd block-nbd
-XEN_SCRIPTS += vtpm vtpm-delete vtpm-addtodb
+XEN_SCRIPTS += vtpm vtpm-delete
 XEN_SCRIPTS += xen-hotplug-cleanup
 XEN_SCRIPTS += external-device-migrate
 XEN_SCRIPT_DATA = xen-script-common.sh locking.sh logging.sh
index 9d8adbba495559d8a01f3050695c3d63dd623ece..00ef8dc3522a9aefcc9430e1c68f976ae1959816 100644 (file)
@@ -25,7 +25,6 @@ vif-common.sh       - sourced by vif-bridge
 vif-nat             - xen virtual network start/stop script in NAT mode 
 vif-route           - xen virtual network start/stop script in routed mode
 vtpm                - called by xen-backend.agent to bind/unbind vTPM devices
-vtpm-addtodb        - script for adding a vTPM instance to the vTPM table
 vtpm-common.sh      - common code for vTPM handling
 vtpm-delete         - remove an entry from the vTPM table given the
                       domain's name
diff --git a/tools/examples/vtpm-addtodb b/tools/examples/vtpm-addtodb
deleted file mode 100644 (file)
index 482b161..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-#!/bin/sh
-
-# This script must be called with the following parameters to have
-# an entry added to the TPM-to-domain associations table in /etc/xen/vtpm.db
-# vtpm-addtodb <dom name> <instance number>
-
-dir=$(dirname "$0")
-. "$dir/vtpm-common.sh"
-
-vtpmdb_add_instance $1 $2
index e4210d1669fe07b1821a9e7f27ca2d0e77ec816e..2e4c89dfdb24ee114a0a644c487b8507d2a26279 100644 (file)
@@ -24,12 +24,9 @@ VTPMDB="/etc/xen/vtpm.db"
 
 #In the vtpm-impl file some commands should be defined:
 #      vtpm_create, vtpm_setup, vtpm_start, etc. (see below)
-#This should be indicated by setting VTPM_IMPL_DEFINED.
 if [ -r "$dir/vtpm-impl" ]; then
        . "$dir/vtpm-impl"
-fi
-
-if [ -z "$VTPM_IMPL_DEFINED" ]; then
+else
        function vtpm_create () {
                true
        }
@@ -245,6 +242,12 @@ function vtpm_create_instance () {
 
        claim_lock vtpmdb
        instance=$(vtpmdb_find_instance $domname)
+
+       if [ "$instance" == "0" -a "$reason" != "create" ]; then
+               release_lock vtpmdb
+               return
+       fi
+
        if [ "$instance" == "0" ]; then
                #Try to give the preferred instance to the domain
                instance=$(xenstore_read "$XENBUS_PATH"/pref_instance)
@@ -317,7 +320,7 @@ function vtpm_delete_instance () {
 #  "-1" : the given machine name is invalid
 #  "0"  : this is not an address of this machine
 #  "1"  : this is an address local to this machine
-function isLocalAddress() {
+function vtpm_isLocalAddress() {
        local addr res
        addr=$(ping $1 -c 1 |  \
               gawk '{ print substr($3,2,length($3)-2); exit }')
@@ -347,7 +350,7 @@ function isLocalAddress() {
 # 2nd: name of the domain to migrate
 # 3rd: the migration step to perform
 function vtpm_migration_step() {
-       local res=$(isLocalAddress $1)
+       local res=$(vtpm_isLocalAddress $1)
        if [ "$res" == "0" ]; then
                vtpm_migrate $1 $2 $3
        fi
@@ -361,8 +364,39 @@ function vtpm_migration_step() {
 # 3rd: the last successful migration step that was done
 function vtpm_recover() {
        local res
-       res=$(isLocalAddress $1)
+       res=$(vtpm_isLocalAddress $1)
        if [ "$res" == "0" ]; then
                vtpm_migrate_recover $1 $2 $3
        fi
 }
+
+
+#Determine the domain id given a domain's name.
+#1st parameter: name of the domain
+#return value: domain id  or -1 if domain id could not be determined
+function vtpm_domid_from_name () {
+       local id name ids
+       ids=$(xenstore-list /local/domain)
+       for id in $ids; do
+               name=$(xenstore-read /local/domain/$id/name)
+               if [ "$name" == "$1" ]; then
+                       echo "$id"
+                       return
+               fi
+       done
+       echo "-1"
+}
+
+
+#Add a virtual TPM instance number and its associated domain name
+#to the VTPMDB file and activate usage of this virtual TPM instance
+#by writing the instance number into the xenstore
+#1st parm: name of virtual machine
+#2nd parm: instance of assoicate virtual TPM
+function vtpm_add_and_activate() {
+       local domid=$(vtpm_domid_from_name $1)
+       if [ "$domid" != "-1" ]; then
+               vtpmdb_add_instance $1 $2
+               xenstore-write backend/vtpm/$domid/0/instance $2
+       fi
+}
index 25b4e4a41b3b7c4c96b6954ba3e3bd5833b5de6a..bd6288d636b4e84066a9ddf77c68381cde2ae79c 100644 (file)
@@ -32,8 +32,6 @@
 # OF THE POSSIBILITY OF SUCH DAMAGE.
 # ===================================================================
 
-VTPM_IMPL_DEFINED=1
-
 #            |        SRC        |    TAG  |      CMD SIZE     |        ORD       | type| mode
 TPM_CMD_OPEN=\\x00\\x00\\x00\\x00\\x01\\xc1\\x00\\x00\\x00\\x10\\x01\\x00\\x00\\x01\\x01\\x01
 TPM_CMD_RESM=\\x00\\x00\\x00\\x00\\x01\\xc1\\x00\\x00\\x00\\x10\\x01\\x00\\x00\\x01\\x01\\x02